#include "adc.h"
/**
  * @brief  ADC接收光敏电阻的初始化
  * @param  None
  * @retval None
  */
void LIGHT_SENSOR_Config(void)
{
	ADC_CommonInitTypeDef ADC_CommonInitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	
	//1、打开ADC外设时钟(这里使用的是ADC3，通道5，与GPIOF_PIN7相连)
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	
	//2、配置引脚为模拟模式
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_7;         // 模拟模式
  GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_AN;				
  GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	//3、配置ADC预分频
	ADC_CommonInitStructure.ADC_Mode              = ADC_Mode_Independent;					  // 独立模式
  ADC_CommonInitStructure.ADC_Prescaler         = ADC_Prescaler_Div4;					    // 4分频  84MHZ / 4 = 21MHZ 
  ADC_CommonInitStructure.ADC_DMAAccessMode     = ADC_DMAAccessMode_Disabled;  	  // 不使用DMA
  ADC_CommonInitStructure.ADC_TwoSamplingDelay  = ADC_TwoSamplingDelay_5Cycles;   // 两次采样的延时
  ADC_CommonInit(&ADC_CommonInitStructure);
	
	//4、配置ADC的转换分辨率以及转换数据对齐格式
	ADC_InitStructure.ADC_Resolution              = ADC_Resolution_12b;						 // 转换精度 12bit 所以数字量范围是0~4095
  ADC_InitStructure.ADC_ScanConvMode            = DISABLE;											 // 禁止扫描
  ADC_InitStructure.ADC_ContinuousConvMode      = DISABLE;											 // 不连续转换
  ADC_InitStructure.ADC_ExternalTrigConvEdge    = ADC_ExternalTrigConvEdge_None; // 不使用外部触发源
  ADC_InitStructure.ADC_DataAlign               = ADC_DataAlign_Right;					 // 数据右对齐
  ADC_InitStructure.ADC_NbrOfConversion         = 1;														 // 规则通道的数量
  ADC_Init(ADC3, &ADC_InitStructure);
	
	//5、配置规则通道
	ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 1, ADC_SampleTime_3Cycles);
	
	//6、使能ADC
  ADC_Cmd(ADC3, ENABLE);
}